package com.zhl.Lambda5;

public class LambdaTest1 {
    public static void main(String[] args) {
        //目标：认识lambda表达式   这里是匿名内部类
//        Animal a = new Animal() {
//            @Override
//            public void eat() {
//                System.out.println("动物吃东西");
//            }
//        };
//        a.eat();

        //注意：使用lambda表达式并不是说能简化全部匿名内部类的写法,只能简化函数式接口的匿名内部类。
        new Swimming() {
            @Override
            public void swim() {
                System.out.println("鱼儿游泳");
            }
        };

        //使用lambda表达式简化匿名内部类   格式：    (被重写方法的形参列表) -> {被重写方法的方法体代码}
        Swimming swimming = () -> System.out.println("鸟儿飞翔");


    }
}

interface Swimming{
    void swim();
}


//函数式接口：只有一个抽象方法的接口
//所以下面这个不能被lambda表达式简化
abstract class Animal{
    public abstract void eat();
}

